package com.zhang.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhang.pojo.RoleBean;
import com.zhang.pojo.UserBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface IUserMapper extends BaseMapper<UserBean> {

    /**
     * 登录
     * @param username 用户名
     * @param pwd 密码
     * @return 用户对象
     */
    UserBean login(@Param("username") String username,@Param("pwd") String pwd);

    /**
     * 动态查询
     * @param page 分页对象
     * @param name 用户名
     * @return 分页集合
     */
    IPage<UserBean> findByPage(Page<UserBean> page, @Param("name") String name);

    /**
     * 添加用户，然后在用户-角色中添加用户id和角色集合，
     * @param userBean 用户对象
     */
    void addUser(UserBean userBean);

    /**
     * 添加角色
     * @param userId 用户id
     * @param roleIds 角色id集合
     */
    void addRole(@Param("userId") Integer userId, @Param("roleIds") Integer[] roleIds);

    /**
     * 根据用户id查询用户，并查询用户角色
     * @param userId 用户id
     * @return 用户对象
     */
    UserBean findById(int userId);

    /**
     * 根据用户id删除用户，并且删除用户-角色中对应用户
     * @param userId
     */
    void del(int userId);

    /**
     * 根据用户id修改用户对应角色，在用户-角色中修改
     * @param userId 用户id
     */
    void update(@Param("userId") int userId, @Param("roleIds") int[] roleIds);

    /**
     * 根据用户id修改密码
     * @param userId 用户id
     * @param pwd 新密码
     */
    void updatePwd(@Param("userId") int userId,@Param("pwd") String pwd);

}
